package Arbre;

import java.util.TreeSet;

import Noeud.Noeud;
import Noeud.Noeud_Default;
import Objet.ListeObjets;
import Probleme.Instance;

public class Arbre_Defaut extends Arbre {
	private TreeSet<Noeud> ouverts;
	
	public Arbre_Defaut(Instance pb, int methodeFrontiere) {
		Noeud courant;
		this.ouverts = new TreeSet<Noeud>();
		this.probleme = pb;
		this.racine = new Noeud_Default(new ListeObjets(), new ListeObjets(), new ListeObjets(), methodeFrontiere);
		this.racine.traiteracine(this.probleme);
		this.nbnoeuds = 0;
		
		if (this.racine.getstatut() == 1) {
			this.ouverts.add(this.racine);
		}
		this.nbnoeuds = 0;
		while (!this.ouverts.isEmpty()) {
			
			courant = this.ouverts.first();
			this.ouverts.remove(courant);
			courant.separe();
			int i = 0;
			while (i < courant.getfils().size()) {
				if (courant.getfils().get(i).getstatut() == 1) {
					this.ouverts.add(courant.getfils().get(i));
				}
				i++;
			}
		}
		this.optimale = this.racine.getmeilleure();
		this.nbnoeuds = Noeud.nbnoeuds;
	}
	
}
